# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -march=aarch64 -mcpu=exynos-m3 -resource-pressure=false < %s | FileCheck %s -check-prefixes=ALL,M3
# RUN: llvm-mca -march=aarch64 -mcpu=exynos-m4 -resource-pressure=false < %s | FileCheck %s -check-prefixes=ALL,M4
# RUN: llvm-mca -march=aarch64 -mcpu=exynos-m5 -resource-pressure=false < %s | FileCheck %s -check-prefixes=ALL,M5

fsqrt	d31, d31

# Newton series for sqrt().
frsqrte	d1, d0
fmul	d2, d1, d1
frsqrts	d2, d0, d2
fmul	d1, d1, d2
fmul	d2, d1, d1
frsqrts	d2, d0, d2
fmul	d1, d1, d2
fmul	d2, d1, d1
frsqrts	d2, d0, d2
fmul	d2, d2, d0
fmul	d1, d1, d2
fcmp	d0, #0.0
fcsel	d0, d0, d1, eq

# ALL:      Iterations:        100
# ALL-NEXT: Instructions:      1400

# M3-NEXT:  Total Cycles:      4203
# M4-NEXT:  Total Cycles:      4103
# M5-NEXT:  Total Cycles:      3803

# ALL-NEXT: Total uOps:        1500

# ALL:      Dispatch Width:    6

# M3-NEXT:  uOps Per Cycle:    0.36
# M3-NEXT:  IPC:               0.33
# M3-NEXT:  Block RThroughput: 27.0

# M4-NEXT:  uOps Per Cycle:    0.37
# M4-NEXT:  IPC:               0.34
# M4-NEXT:  Block RThroughput: 3.3

# M5-NEXT:  uOps Per Cycle:    0.39
# M5-NEXT:  IPC:               0.37
# M5-NEXT:  Block RThroughput: 3.3

# ALL:      Instruction Info:
# ALL-NEXT: [1]: #uOps
# ALL-NEXT: [2]: Latency
# ALL-NEXT: [3]: RThroughput
# ALL-NEXT: [4]: MayLoad
# ALL-NEXT: [5]: MayStore
# ALL-NEXT: [6]: HasSideEffects (U)

# ALL:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:

# M3-NEXT:   1      25    26.00                       fsqrt	d31, d31
# M3-NEXT:   1      4     0.50                        frsqrte	d1, d0

# M4-NEXT:   1      12    2.25                        fsqrt	d31, d31
# M4-NEXT:   1      3     0.50                        frsqrte	d1, d0

# M5-NEXT:   1      12    2.25                        fsqrt	d31, d31
# M5-NEXT:   1      3     0.50                        frsqrte	d1, d0

# ALL-NEXT:  1      3     0.33                        fmul	d2, d1, d1
# ALL-NEXT:  1      4     0.33                        frsqrts	d2, d0, d2
# ALL-NEXT:  1      3     0.33                        fmul	d1, d1, d2
# ALL-NEXT:  1      3     0.33                        fmul	d2, d1, d1
# ALL-NEXT:  1      4     0.33                        frsqrts	d2, d0, d2
# ALL-NEXT:  1      3     0.33                        fmul	d1, d1, d2
# ALL-NEXT:  1      3     0.33                        fmul	d2, d1, d1
# ALL-NEXT:  1      4     0.33                        frsqrts	d2, d0, d2
# ALL-NEXT:  1      3     0.33                        fmul	d2, d2, d0
# ALL-NEXT:  1      3     0.33                        fmul	d1, d1, d2
# ALL-NEXT:  1      2     1.00                        fcmp	d0, #0.0

# M3-NEXT:   2      5     1.00                        fcsel	d0, d0, d1, eq
# M4-NEXT:   2      5     1.00                        fcsel	d0, d0, d1, eq
# M5-NEXT:   2      2     1.00                        fcsel	d0, d0, d1, eq
